////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  camxfdconfig.h
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef CAMXFDCONFIG_H
#define CAMXFDCONFIG_H

#include "parametermodule.h"
#include "parameterfilesymboltable.h"
#include "parametertypes.h"

#define CAMXFDCONFIG_NAMESPACE_BEGIN namespace camxfdconfig {
#define CAMXFDCONFIG_NAMESPACE_END }

CAMXFDCONFIG_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDMedianFilter
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDMedianFilter
{
    UINT32 historyLength;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDAverageFilter
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDAverageFilter
{
    UINT32 historyLength;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDHysteresisFilter
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDHysteresisFilter
{
    UINT32 startA;
    UINT32 endA;
    UINT32 startB;
    UINT32 endB;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDTemporalFilter
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDTemporalFilter
{
    UINT32 numerator;
    UINT32 denominator;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDStabilizationFilter
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class FDStabilizationFilter
{
    NoFilter   = 0,
    Temporal   = 1,
    Hysteresis = 2,
    Average    = 3,
    Median     = 4
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDStabilizationMode
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class FDStabilizationMode
{
    Equal                      = 0,
    Smaller                    = 1,
    Bigger                     = 2,
    CloserToReference          = 3,
    ContinuesEqual             = 4,
    ContinuesSmaller           = 5,
    ContinuesBigger            = 6,
    ContinuesCloserToReference = 7,
    WithinThreshold            = 8
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDStabilizationAttributeConfig
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDStabilizationAttributeConfig
{
    BOOL                  enable;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// mode
    /// Default Value: WithinThreshold
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDStabilizationMode   mode;
    UINT32                minStableState;
    UINT32                stableThreshold;
    UINT32                threshold;
    UINT32                stateCount;
    UINT32                useReference;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// filterType
    /// Default Value: Average
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDStabilizationFilter filterType;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// value
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    union valueStruct
    {

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// temporalFilter
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FDTemporalFilter   temporalFilter;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// hysteresisFilter
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FDHysteresisFilter hysteresisFilter;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// averageFilter
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FDAverageFilter    averageFilter;

        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// medianFilter
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        FDMedianFilter     medianFilter;
    } value;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDStabilizationConfig
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDStabilizationConfig
{
    BOOL                           enable;
    UINT32                         historyDepth;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// position
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDStabilizationAttributeConfig position;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// size
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDStabilizationAttributeConfig size;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDROIManagerConfig
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDROIManagerConfig
{
    BOOL   enable;
    UINT32 newGoodFaceConfidence;
    UINT32 newNormalFaceConfidence;
    UINT32 existingFaceConfidence;
    UINT32 angleDiffForStrictConfidence;
    UINT32 strictNewGoodFaceConfidence;
    UINT32 strictNewNormalFaceConfidence;
    UINT32 strictExistingFaceConfidence;
    FLOAT  faceLinkMoveDistanceRatio;
    FLOAT  faceLinkMinSizeRatio;
    FLOAT  faceLinkMaxSizeRatio;
    FLOAT  faceLinkRollAngleDifference;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDSearchDensity
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class FDSearchDensity
{
    FDSearchDensityHighest = 0,
    FDSearchDensityHigh    = 1,
    FDSearchDensityNormal  = 2,
    FDSearchDensityLow     = 3,
    FDSearchDensityLowest  = 4
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDROIGeneratorConfig
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDROIGeneratorConfig
{
    BOOL            enable;
    UINT32          baseThreshold;
    UINT32          innerThreshold;
    UINT32          expandFaceSizePercentage;
    UINT32          expandBoxBorderPercentage;
    FLOAT           faceSpreadTolerance;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// searchDensity
    /// Default Value: FDSearchDensityNormal
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDSearchDensity searchDensity;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDFPFilterConfig
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDFPFilterConfig
{
    BOOL            enable;
    UINT32          baseThreshold;
    UINT32          innerThreshold;
    UINT32          expandFaceSizePercentage;
    UINT32          expandBoxBorderPercentage;
    FLOAT           faceSpreadTolerance;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// searchDensity
    /// Default Value: FDSearchDensityNormal
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDSearchDensity searchDensity;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDDetectionMode
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class FDDetectionMode
{
    FDDetectionModeDefault    = 0,
    FDDetectionModeFull       = 1,
    FDDetectionModeLite       = 2,
    FDDetectionModeContinuous = 3
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDSearchAngle
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class FDSearchAngle
{
    FDAngleNone = 0,
    FDAngle45   = 1,
    FDAngle90   = 2,
    FDAngle135  = 3,
    FDAngleAll  = 4
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDProfileConfig
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDProfileConfig
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// searchAngle
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDSearchAngle searchAngle;
    UINT32        upFrontSearchAnggle;
    INT32         priorityAngleRange;
    INT32         priorityThreshold;
    INT32         priorityInnerThreshold;
    INT32         nonPriorityThreshold;
    INT32         nonPriorityInnerThreshold;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDFaceSizeType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class FDFaceSizeType
{
    FDFaceAdjFixed    = 0,
    FDFaceAdjFloating = 1
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDFaceSize
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDFaceSize
{

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// type
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDFaceSizeType type;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// value
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    union valueStruct
    {
        UINT32 size;
        FLOAT  ratio;
    } value;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDSwConfig
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDSwConfig
{
    BOOL            enable;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// minFaceSize
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDFaceSize      minFaceSize;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// maxFaceSize
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDFaceSize      maxFaceSize;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// frontProfileConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDProfileConfig frontProfileConfig;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// halfProfileConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDProfileConfig halfProfileConfig;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// fullProfileConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDProfileConfig fullProfileConfig;
    BOOL            enableUpFrontAngles;
    BOOL            skipIfNoOrientation;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// detectionMode
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDDetectionMode detectionMode;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// newFaceSearchDensity
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDSearchDensity newFaceSearchDensity;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// existingFaceSearchDensity
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDSearchDensity existingFaceSearchDensity;
    BOOL            detectNewFacesInExistingFaceDirection;
    UINT32          noFaceSearchCycle;
    UINT32          newFaceSearchCycle;
    UINT32          newFaceSearchInterval;
    UINT32          upFrontNoFaceSearchCycle;
    UINT32          upFrontNewFaceSearchCycle;
    UINT32          upFrontNewFaceSearchInterval;
    UINT32          positionSteadiness;
    UINT32          sizeSteadiness;
    BOOL            rollAngleExtension;
    BOOL            yawAngleExtension;
    UINT32          noFaceFrameSkip;
    UINT32          newFaceFrameSkip;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDHwConfig
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FDHwConfig
{
    BOOL          enable;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// minFaceSize
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDFaceSize    minFaceSize;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// maxFaceSize
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDFaceSize    maxFaceSize;
    BOOL          enableUpFrontAngles;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// angle
    /// Default Value: FDAngleAll
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDSearchAngle angle;
    UINT32        upFrontAngle;
    UINT32        threshold;
    UINT32        noFaceFrameSkip;
    UINT32        newFaceFrameSkip;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FDFaceAccuracy
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enum class FDFaceAccuracy
{
    FDAccuracyHigh   = 0,
    FDAccuracyNormal = 1
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FaceDetectionCtrlType
/// Comments:       Face Detection Tuning Definition
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct FaceDetectionCtrlType
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Binary file symbol table entry ID
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    UINT32 SymbolTableID;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// module_version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    struct module_versionStruct
    {
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        /// Binary file symbol table entry ID
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        UINT32 SymbolTableID;
        INT32 major_revision;
        INT32 minor_revision;
        INT32 incr_revision;
    } module_version;
    UINT32                maxNumberOfFaces;
    UINT32                maxFPSWithFaces;
    UINT32                maxFPSWithNoFaces;
    UINT32                multiCameraMaxFPSWithFaces;
    UINT32                multiCameraMaxFPSWithNoFaces;
    BOOL                  lockDetectedFaces;
    UINT32                initialNoFrameSkipCount;
    UINT32                maxPendingFrames;
    UINT32                delayCount;
    UINT32                holdCount;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// accuracy
    /// Default Value: FDAccuracyNormal
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDFaceAccuracy        accuracy;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// hwConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDHwConfig            hwConfig;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// swConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDSwConfig            swConfig;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// FPFilter
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDFPFilterConfig      FPFilter;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// ROIGenerator
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDROIGeneratorConfig  ROIGenerator;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// managerConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDROIManagerConfig    managerConfig;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// stabilization
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FDStabilizationConfig stabilization;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// FaceDetectionCtrlTypeClass
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class FaceDetectionCtrlTypeClass : public ParameterModule, public FaceDetectionCtrlType
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Version
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const UINT16 MAJOR = 3;
    static const UINT16 MINOR = 4;
    static const UINT32 PATCH = 0;

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Default Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FaceDetectionCtrlTypeClass(
        const CHAR* name);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    FaceDetectionCtrlTypeClass(
        const CHAR* name,
        UINT32 modeId,
        UINT16 mode,
        UINT16 subMode,
        UINT32 group);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Destructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ~FaceDetectionCtrlTypeClass();

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// GetName
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static const CHAR* GetName(
        const CHAR* type);


    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDMedianFilter
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDMedianFilter(
        ParameterFileSymbolTableEntry* entry,
        FDMedianFilter* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDAverageFilter
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDAverageFilter(
        ParameterFileSymbolTableEntry* entry,
        FDAverageFilter* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDHysteresisFilter
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDHysteresisFilter(
        ParameterFileSymbolTableEntry* entry,
        FDHysteresisFilter* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDTemporalFilter
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDTemporalFilter(
        ParameterFileSymbolTableEntry* entry,
        FDTemporalFilter* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDStabilizationAttributeConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDStabilizationAttributeConfig(
        ParameterFileSymbolTableEntry* entry,
        FDStabilizationAttributeConfig* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDStabilizationAttributeConfig_valueStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDStabilizationAttributeConfig_valueStruct(
        ParameterFileSymbolTableEntry* entry,
        FDStabilizationAttributeConfig::valueStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDStabilizationConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDStabilizationConfig(
        ParameterFileSymbolTableEntry* entry,
        FDStabilizationConfig* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDROIManagerConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDROIManagerConfig(
        ParameterFileSymbolTableEntry* entry,
        FDROIManagerConfig* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDROIGeneratorConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDROIGeneratorConfig(
        ParameterFileSymbolTableEntry* entry,
        FDROIGeneratorConfig* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDFPFilterConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDFPFilterConfig(
        ParameterFileSymbolTableEntry* entry,
        FDFPFilterConfig* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDProfileConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDProfileConfig(
        ParameterFileSymbolTableEntry* entry,
        FDProfileConfig* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDFaceSize
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDFaceSize(
        ParameterFileSymbolTableEntry* entry,
        FDFaceSize* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDFaceSize_valueStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDFaceSize_valueStruct(
        ParameterFileSymbolTableEntry* entry,
        FDFaceSize::valueStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDSwConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDSwConfig(
        ParameterFileSymbolTableEntry* entry,
        FDSwConfig* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FDHwConfig
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFDHwConfig(
        ParameterFileSymbolTableEntry* entry,
        FDHwConfig* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load FaceDetectionCtrlType
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL LoadFaceDetectionCtrlType(
        ParameterFileSymbolTableEntry* entry,
        FaceDetectionCtrlType* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Load module_versionStruct
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static BOOL Loadmodule_versionStruct(
        ParameterFileSymbolTableEntry* entry,
        FaceDetectionCtrlType::module_versionStruct* structure);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Parse symbol table entry, and return a new object
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    virtual ParameterModule* Parse(
        ParameterSetManager* manager,
        ParameterFileSymbolTableEntry* entry) const;

}; // End class FaceDetectionCtrlTypeClass

CAMXFDCONFIG_NAMESPACE_END
#endif // CAMXFDCONFIG_H

